package com.github.base.service;

import com.github.base.dto.role.RoleDTO;
import com.github.base.vo.role.RolePageListVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.Set;

/**
 * 角色基础操作接口
 */
public interface RoleService {
    /**
     * 新增角色
     *
     * @param roleDTO 新增角色信息
     */
    void save(RoleDTO roleDTO);

    /**
     * 分页查询角色列表
     *
     * @param number   当前页码
     * @param size     每页数据量
     * @param roleName 角色名称
     * @param usable   使用状态
     * @param roleDesc 角色表述
     * @return 返回分页数据
     */
    Page<RolePageListVO> pageList(Integer number, Integer size, String roleName, Integer usable, String roleDesc);

    /**
     * 修改角色信息
     *
     * @param roleDTO 修改角色信息
     */
    void update(RoleDTO roleDTO);

    /**
     * 删除角色信息
     *
     * @param id 角色id
     */
    void delete(Long id);

    /**
     * 切换角色可用状态
     *
     * @param id 角色id
     */
    void toggle(Long id);

    /**
     * 给角色分配资源
     *
     * @param id            角色id
     * @param permissionIds 角色资源数组
     */
    void allotPermission(Long id, Integer[] permissionIds);

    /**
     * 查询角色的所有资源
     *
     * @param id 角色id
     * @return 资源id集合
     */
    Set<Long> permissions(Long id);
}
